layui.use(['upload', 'form', 'layer', 'jquery'], function () {
    $ = layui.jquery;
    let form = layui.form,
        layer = layui.layer;
    let upload = layui.upload;
    let path = "";
    let url = 'http://localhost:8080';
    //常规使用 - 普通图片上传
    let uploadInst = upload.render({
        elem: '#file'
        , url: url + '/upload' //此处用的是第三方的 http 请求演示，实际使用时改成您自己的上传接口即可。
        , before: function (obj) {
            //预读本地文件示例，不支持ie8
            obj.preview(function (index, file, result) {
                $('#demo1').attr('src', result); //图片链接（base64）
            });
        }
        , done: function (res) {
            //console.log(res);
            path = res.data.src;

            //如果上传失败
            if (res.code > 0) {
                return layer.msg('上传失败');
            }
            //上传成功的一些操作
            //……
            $('#demoText').html(''); //置空上传失败的状态
        }
    });

    const E = window.wangEditor;
    const editor = new E('#content');
    const editUrl = url + '/upload';//服务器访问地址
    editor.customConfig.uploadImgShowBase64 = true;  // 使用 base64 保存图片
    editor.customConfig.uploadImgServer = editUrl; // 上传图片到服务器
    editor.customConfig.showLinkImg = false;// 隐藏“网络图片”tab
    //配置属性名称，绑定请求的图片数据
    editor.customConfig.uploadFileName = 'file';
    editor.customConfig.withCredentials = false;
    // 将图片大小限制为 5M
    editor.customConfig.uploadImgMaxSize = 5 * 1024 * 1024;
    editor.customConfig.uploadImgHooks = {

        success: function (xhr, editor, result) {
            // 图片上传并返回结果，图片插入成功之后触发
            // xhr 是 XMLHttpRequst 对象，editor 是编辑器对象，result 是服务器端返回的结果
            //console.log(result);
        },
        // 如果服务器端返回的不是 {errno:0, data: [...]} 这种格式，可使用该配置
        // （但是，服务器端返回的必须是一个 JSON 格式字符串！！！否则会报错）
        customInsert: function (insertImg, result, editor) {
            // 图片上传并返回结果，自定义插入图片的事件（而不是编辑器自动插入图片！！！）
            // insertImg 是插入图片的函数，editor 是编辑器对象，result 是服务器端返回的结果

            // 举例：假如上传图片成功后，服务器端返回的是 {url:'....'} 这种格式，即可这样插入图片：
            let url = result.data.src;
            //console.log(url);
            insertImg(url)//回显到富文本里面
            // result 必须是一个 JSON 格式字符串！！！否则报错
        }
    };

    //富文本创建
    editor.create();

    findById();

    function findById() {
        let id = sessionStorage.getItem("newsId");
        let res = myAjax("/back/news/id", {id: id}, "get");
        if (res != null) {
            if (res.data != null) {
                setProductData(res.data);
                getTypeData(res.data);
            }
        }
    }

    function setProductData(data) {
        //console.log(data);
        $("#title").val(data.title);
        $(':radio[name="enable"][value="' + data.enable + '"]').prop("checked", true);
        $(':radio[name="isShow"][value="' + data.isShow + '"]').prop("checked", true);
        $(':radio[name="isRecommend"][value="' + data.isRecommend + '"]').prop("checked", true);
        //将原来的图片地址显示在图片div里面
        $("#demo1").attr("src", data.imgHref);
        //给全局变量文件上传的地址赋值，因为编辑的时候我们需要用到它，
        path = data.imgHref;
        // 富文本应该回显
        editor.txt.html(data.content);
    }


    function getTypeData(data) {
        let res = myAjax("/back/news/type/all", {isShow: 1, enable: 1}, "get");
        if (res != null) {
            //console.log(res);
            setTypeData(res.data, data);
        }
    }

    function setTypeData(data, product) {
        let str = '';
        for (let i = 0; i < data.length; i++) {
            if (data[i].id === product.typeId) {
                str += ' <option value="' + data[i].id + '" selected="selected">' + data[i].name + '</option>';
            } else {
                str += ' <option value="' + data[i].id + '">' + data[i].name + '</option>';
            }
        }
        $("#typeId").html(str);
        form.render();
    }


    //监听提交
    form.on('submit(edit)',
        function (data) {
            data = data.field;
            data.imgHref = path;
            data.content = editor.txt.html();
            data.id = sessionStorage.getItem("newsId");
            //console.log(data);
            //发异步，把数据提交给java
            let res = myAjax("/back/news/update", data, "post");
            if (res != null) {
                if (res.count === 1) {
                    layer.alert("修改成功", {
                            icon: 6
                        },
                        function () {
                            //关闭当前frame
                            xadmin.close();

                            // 可以对父窗口进行刷新
                            xadmin.father_reload();
                        });
                } else {
                    layer.alert("修改失败");
                }
            }
            return false;
        });
});